from direct.showbase.DirectObject import DirectObject
import abc


class StateAbstract(object, DirectObject):
    __metaclass__ = abc.ABCMeta

    def __init__(self, name):
        self.name = name

    @abc.abstractmethod
    def activate(self):
        """activate state."""

    @abc.abstractmethod
    def deactivate(self):
        """deactivate state."""

    @abc.abstractmethod
    def update(self, dt):
        """update state."""